package br.ufg.inf.espweb.sgca.util;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author diCastro
 */
public class SegurancaUtils {
    public static final String SHA_256 = "SHA-256";
    public static final String MD5 = "MD5";
    
    /**
     * Recebe um valor do tipo String e encriptografa-o com o tipo SHA-256.
     * @param valor O valor a ser encriptografado.
     * @return O valor encriptografado.
     */
    public static String encriptografar(String valor) {
	return encriptografar(valor, SHA_256);
    }
    
    /**
     * Recebe um valor do tipo String e encriptografa-o de acordo com o padrão do tipo de Criptografia.
     * @param valor O valor a ser encriptografado.
     * @param tipoCriptografia O tipo de criptografia. Ex: MD5, SHA-256
     * @return O valor encriptografado.
     */
    public static String encriptografar(String valor, String tipoCriptografia) {
        try {
            StringBuilder valorEncriptografado = new StringBuilder();
            
            MessageDigest algorithm = MessageDigest.getInstance(SHA_256);
            byte messageDigest[] = algorithm.digest(valor.getBytes("UTF-8"));
            
            for (byte b : messageDigest) {
                valorEncriptografado.append(String.format("%02X", 0xFF & b));
            }
            
            return valorEncriptografado.toString();
        } catch (NoSuchAlgorithmException | UnsupportedEncodingException ex) {
            Logger.getLogger(SegurancaUtils.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }
}
